<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // Event Loop/事件循环/事件环
        // 1. JS 代码的执行分为同步代码（任务）和异步代码（任务：微任务=> Promise.then、MutationObserver + 宏任务 => 定时器）
        // 2. 当碰到同步代码时直接在执行栈中执行
        // 3. 当碰到异步并且时机符合时（例如定时器时间到了，例如 AJAX 请求你发起了，例如你点击了按钮...），就把异步代码添加到任务队列当中
        // 4. 【当执行栈中同步代码执行完毕后，就去任务队列中把异步代码拿到执行栈中执行】
        // 5. 这种反复轮训任务队里的操作就是 Event Loop
        // 问题：这个 1 一定是 1s 之后打印吗？
        console.log(1) // 1
        setTimeout(() => {
            console.log(1)
        }, 1000)
        // 可能还有其他代码
        // while (true) { }
    </script>
</body>

</html>